package com.dyj.applet.domain.query;

import com.dyj.common.domain.query.BaseSubscriptionQuery;
import com.dyj.common.enums.SubscriptionAccessTokenTypeEnum;

public class QuerySubscriptionTplListQuery extends BaseSubscriptionQuery {
    /**
     * <p><span style="font-size: 14px;" elementtiming="element-timing">服务类目id，多个id用英文逗号隔开，</span><span style="color: #171A1C;"><span style="font-size: 14px;">可以通过</span></span><span style="color: #3C89FF;"><span style="font-size: 14px;"><a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/category/query-app-categories" target="_blank" rel="nofollow" class="syl-link" elementtiming="element-timing">获取已设置的服务类目接口</a></span></span><span style="color: #171A1C;"><span style="font-size: 14px;">获取小程序的服务类目，只能是已经审核通过的服务类目</span></span></p> 选填
     */
    private String categoryIds;

    /**
     * 订阅消息类型
     */
    private Integer classification;

    /**
     * <p>根据关键词搜索</p> 选填
     */
    private String keyword;

    /**
     * 分页编号，从1开始
     */
    private Integer pageNum;

    /**
     * 分页大小，小于等于50
     */
    private Integer pageSize;

    /**
     * <p>模版类型</p><p>1: 公共模版</p>
     */
    private Integer templateType;


    public String getCategoryIds() {
        return categoryIds;
    }

    public QuerySubscriptionTplListQuery setCategoryIds(String categoryIds) {
        this.categoryIds = categoryIds;
        return this;
    }

    public Integer getClassification() {
        return classification;
    }

    public QuerySubscriptionTplListQuery setClassification(Integer classification) {
        this.classification = classification;
        return this;
    }

    public String getKeyword() {
        return keyword;
    }

    public QuerySubscriptionTplListQuery setKeyword(String keyword) {
        this.keyword = keyword;
        return this;
    }

    public Integer getPageNum() {
        return pageNum;
    }

    public QuerySubscriptionTplListQuery setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
        return this;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public QuerySubscriptionTplListQuery setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
        return this;
    }

    public Integer getTemplateType() {
        return templateType;
    }

    public QuerySubscriptionTplListQuery setTemplateType(Integer templateType) {
        this.templateType = templateType;
        return this;
    }

    public static QuerySubscriptionTplListQueryBuilder builder() {
        return new QuerySubscriptionTplListQueryBuilder();
    }

    public static final class QuerySubscriptionTplListQueryBuilder {
        private String categoryIds;
        private Integer classification;
        private String keyword;
        private Integer pageNum;
        private Integer pageSize;
        private Integer templateType;
        private SubscriptionAccessTokenTypeEnum accessTokenTypeEnum;
        private Integer tenantId;
        private String clientKey;

        private QuerySubscriptionTplListQueryBuilder() {
        }

        public QuerySubscriptionTplListQueryBuilder categoryIds(String categoryIds) {
            this.categoryIds = categoryIds;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder classification(Integer classification) {
            this.classification = classification;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder keyword(String keyword) {
            this.keyword = keyword;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder pageNum(Integer pageNum) {
            this.pageNum = pageNum;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder pageSize(Integer pageSize) {
            this.pageSize = pageSize;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder templateType(Integer templateType) {
            this.templateType = templateType;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder accessTokenTypeEnum(SubscriptionAccessTokenTypeEnum accessTokenTypeEnum) {
            this.accessTokenTypeEnum = accessTokenTypeEnum;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder tenantId(Integer tenantId) {
            this.tenantId = tenantId;
            return this;
        }

        public QuerySubscriptionTplListQueryBuilder clientKey(String clientKey) {
            this.clientKey = clientKey;
            return this;
        }

        public QuerySubscriptionTplListQuery build() {
            QuerySubscriptionTplListQuery querySubscriptionTplListQuery = new QuerySubscriptionTplListQuery();
            querySubscriptionTplListQuery.setCategoryIds(categoryIds);
            querySubscriptionTplListQuery.setClassification(classification);
            querySubscriptionTplListQuery.setKeyword(keyword);
            querySubscriptionTplListQuery.setPageNum(pageNum);
            querySubscriptionTplListQuery.setPageSize(pageSize);
            querySubscriptionTplListQuery.setTemplateType(templateType);
            querySubscriptionTplListQuery.setAccessTokenTypeEnum(accessTokenTypeEnum);
            querySubscriptionTplListQuery.setTenantId(tenantId);
            querySubscriptionTplListQuery.setClientKey(clientKey);
            return querySubscriptionTplListQuery;
        }
    }
}
